인터페이스(interfaces)
✒️ 2025-05-16 13:57 내용 수정
다른 클래스의 작성 기본 틀을 제공하면서 다른 클래스 사이의 중간 매개 역할을 담당하는 일종의 추상 클래스
- 추상 클래스처럼 스스로 생성자를 통한 객체 생성을 할 수 없다.
- 어떤 형태로도 객체를 만들 수 없기 때문에 클래스라고 부를 수 없다.
- 기능 명세서같이 객체의 매개체, 즉 객체를 사용하는 방법을 제공하는 새로운 블록이라고 볼 수 있다.
- 가지고 있는 모든 메소드가 public abstract인 추상 메소드여야 한다.
- 추상클래스(Abstract classes) 참고.
- 모든 메소드가 정의만 되어있어서 그 기능을 규격화하는 역할이다.
- 인터페이스 안에 있는 필드와 메소드는 각각 상수와 추상 메소드만 존재할 수 있으므로, static키워드랑 abstract키워드를 생략할 수 있다.
- 추상 메소드는 일반 메소드를 포함하거나 추상 메소드가 없는 경우도 있다.
- 필드는
public static final로만 가질 수 있다. - 장점
- 정보를 은닉할 수 있다.
- 실제 내부를 보지 않아도 코드를 개발할 수 있다.
- 객체 지향 기법 참고.
- 모듈화가 가능하다.
- 개발 코드에서 객체 변경이 필요할 때 기존 객체들을 수정하지 않고 새 객체를 만들어 코드 수정을 최소화할 수 있다.
- 정보를 은닉할 수 있다.
- 하나의 클래스가 여러 개의 인터페이스를 구현할 수 있다.
- 클래스가 인터페이스 구현 시
implements키워드를 사용한다. - 클래스의 상속은 다중 상속을 할 수 없는 것과 차이가 있다.
- 클래스가 인터페이스 구현 시
- 인터페이스끼리 상속할 수 있으며, 인터페이스는 구현 능력이 없기 때문에 다중 상속이 가능하다.
- 인터페이스가 인터페이스를 상속할 때는 클래스끼리의 상속처럼
extends키워드를 사용한다.
- 인터페이스가 인터페이스를 상속할 때는 클래스끼리의 상속처럼
- 인터페이스를 구현한 클래스로 생성한 객체를 인터페이스 타입으로 타입 변환을 하면, 각 인터페이스 내 정의된 메소드들만 사용할 수 있다.

- 추상 메소드는 접근제한자를 private으로 두면 추상메소드에 접근하기 어려우므로 public으로 써야 한다.
public interface InterfaceName { // interface는 추상메소드를 가짐
public final static field; // 필드로 상수만 가질 수 있다.
public abstract void method1(); // public abstract를 생략해도 추상메소드로 인식됨
public abstract void method2();
}
- 클래스는 인터페이스를 상속할 때
implements - 인터페이스는 인터페이스를 상속할 때
extends
public class ChildClass implements InterfaceName1, InterfaceName2 {}
// 클래스가 인터페이스 상속
public interface InterfaceName1 extends InterfaceName2, InterfaceName3 {}
// 인터페이스가 인터페이스 상속